Este ejemplo muestra c�mo escribir un programa que recupera atributos desde un objeto directorio. Usa un proveedor de servidos LDAP para acceder a servicios LDAP.
 �Importar las clases JNDI Directory
�Importar las clases JNDI Directory
Usando nuestro editor de texto favorito, creamos un fichero llamado Getattr.java.
Podemos importar el paquete completo o s�lo las clases e interfacesindividuales que vamos a utilizar. El siguiente c�digo importa las clases usadas de los paquetes javax.naming y javax.naming.directory.
import javax.naming.Context; import javax.naming.directory.InitialDirContext; import javax.naming.directory.DirContext; import javax.naming.directory.Attributes; import javax.naming.NamingException;
 �Crear le Contexto de Directorio Inicial
�Crear le Contexto de Directorio Inicial
En el m�todo main() del programa, creamos el contexto de directorio inicial. Esto es similar a la creacci�n del contexto inicial en el anterior ejemplo naming, excepto en que usamos el constructor para InitialDirContext.
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
    "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
DirContext ctx = new InitialDirContext(env);
Indicamos que est�mos usando el proveedor de sericios LDAP seleccionando el par�metro Hashtable del constructor apropiado de InitialDirContext .
Por ahora, lo �nico a entender es que el programa por defecto identifica al serveridor LDAP en la m�quina local. Si nuestro sevidor LDAP est� en otra m�quina o est� usando otro puerto, tendremos que editar adecuadamente la URL de LDAP ("ldap://localhost:389/o=JNDITutorial").
Las instrucciones para configurar el servidor LDAP de ejemplo para este tutorial se dan en la secci�n Preparaciones.
 �Obtener Atributos de un Objeto Directorio
�Obtener Atributos de un Objeto Directorio
Luego, usamos getAttributes() para obtener los atributos de un objeto. El siguiente c�digo recupera todos los atributos asociados con el objeto unido al nombre "cn=Ted Geisel, ou=People".
Attributes attrs = ctx.getAttributes("cn = Ted Geisel, ou=People");
 �Extraer el Atributo Deseado
�Extraer el Atributo Deseado
Desde un conjunto de atributos, Attributes, podemos solicitar un atributo particular usando Attributes.get() y luego obtener el valor de ese atriuto. La siguiente l�nea primero obtiene el atributo surname "sn" y luego llama a Attribute.get() para obtener sy valor.
attrs.get("sn").get();
 �Capturar NamingException
�Capturar NamingException
Las llamadas a m�todos mostradas hasta ahora pueden lanzar una NamingException.
Por esta raz�n, necesitamos envolver estas llamadas dentro de bloques try/catch.
Aqu� est� el fragmento de c�digo repetido con la clausula try/catch.
try {
    // Create the initial directory context
    DirContext ctx = new InitialDirContext(env);
	    
    // Ask for all attributes of the object 
    Attributes attrs = ctx.getAttributes("cn=Ted Geisel, ou=People");
    // Find the surname attribute ("sn") and print it
    System.out.println("sn: " + attrs.get("sn").get());
} catch (NamingException e) {
    System.err.println("Problem getting attribute:" + e);
}
 �Compilar el Programa
�Compilar el Programa
Luego, compilamos el fichero fuente usando el compilador Java. Como con el ejemplo anterior, para hacer esto necesitamos acceso a las clases JNDI.
Si la compilaci�n tiene �xito, el compilador crear� un fichero llamado Getattr.class en el mismo directorio (o carpeta) que el fichero fuente (Getattr.java).
Si la compilaci�n falla, debemos asegurarnos de haber tecleado correctamente el nombre del fichero fuente, usando las ma�usculas apropidas. Si todav�a tenemos problemas podemos vistar la lecci�n Problemas comunes en busca de ayuda.
 �Ejecutar el Programa
�Ejecutar el Programa
Como con el ejemplo anterior, necesitamos acceder a las clases JNDI, y a la clase de nuestro ejemplo� Getattr.class. Tambi�n necesitamos acceder a las clases del proveedor de servicios LDAP (ldap.jar y providerutil.jar). Si est�mos usando Java 2 SDK, v1.3, estas clases ya estar�n incluidas.
Aqu� tenemos un ejemplo de una l�nea de comandos para ejecutar Getattr y la salida que genera.
# java Getattr sn: Geisel
Recuerda que el programa fue configurado con la siguiente propiedad:
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
Con esta configuraci�n, este comando consulta al servidor LDAP en la m�quina localhost que est� escuchando en el puerto 389, siriviendo el espacio de nombres "o=JNDITutorial".
(Puedes ver la secci�n Preparaciones para m�s detalles sobre este paso de configuraci�n). Le pide los atributos de la entrada cn=Ted Geisel, ou=People . Una vez que tiene los atributos, extrae el atributo surname ("sn").
Si tienes problemas al ejecutar este ejemplo, puedes visitar la lecci�n Problemas Comunes.